package client;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Classe de démarrage de l'application. 
 * 
 * @author Julien Dubois
 * @version 1.0 (Avril 2012)
 *
 */

@SuppressWarnings("serial")
public class ClientFenetreDemarrage extends JFrame implements ActionListener,WindowListener
{
	//DECLARATION DES VARIABLES DE LA CLASSE 
	
	/**
	 * Panel de la fenêtre.
	 */
	private JPanel panel = new JPanel();
	
	/**
	 * Bouton de démarrage.
	 */
	private JButton btnDemarrer = new JButton("Petites annonces, cliquez ici !");
	
	/**
	 * Image de démarrage
	 */
	private JLabel image = new JLabel(new ImageIcon("Images/journal.jpg"));
	
	
	/**
	 * Booleen de notre fenêtre.
	 */
	//le booleen quitter sert à assurer proprement la fermeture de la connexion avec le serveur. 
	private boolean quitter = true;
	

	// CONSTRUCTEUR DE LA FENETRE
	
	/**
	 * Constructeur par défaut.
	 */
	public ClientFenetreDemarrage()
	{
		this.setTitle("Petites Annonces by ESIGELEC");
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setVisible(true);
		
		
		//on définit la taille de la fenêtre
		//600x660 pour respecter au mieux la taille de l'image d'accueil.
		this.setSize(600,660);
		
		//On colore le panel dans un gris sympathique et soyeux.
		panel.setBackground(Color.LIGHT_GRAY);
		this.setContentPane(panel);
		
		
		//On n'empêche le redimensionnement.
		this.setResizable(false);
		
		//Definit le panel + ajout des boutons.
		panel.setLayout(new BorderLayout());
		panel.add(btnDemarrer, BorderLayout.SOUTH);
		panel.add(image, BorderLayout.NORTH);
		btnDemarrer.addActionListener(this);
		
		/*
		 * Va nous pemettre d'utiliser this.dispose pour disposer d'un fenêtre quand on en a plus besoin (pour la fermer)
		 * Ce bout de code sert à fermer la connexion avec le serveur proprement (pas de message d'erreur) lorsque l'on clique sur la croix rouge.
		 */
		this.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent arg0)
			{
				if(quitter)
				{
					ClientCommunication.getInstance().fermerConnexion();
				}
			}
		});
		
		//On le met à la fin pour que ma fenêtre soit bien au centre.
		this.setLocationRelativeTo(null);
		
	}
	
	
	// ACTIONS SUR LES BOUTONS
	

	public void actionPerformed(ActionEvent e)
	{
		Object event = e.getSource();
		
		//Clique sur le bouton Démarrer.
		if (event == btnDemarrer)
		{
			quitter = false;
			ClientCommunication.getInstance().creerFenetre(panel, "fenetreAccueil");
			this.dispose();
		}
	}

	//Méthodes implémentées de WindowListener, on ne les utilisent pas.
	
	@Override
	public void windowActivated(WindowEvent arg0)
	{
		
	}


	@Override
	public void windowClosed(WindowEvent arg0)
	{

	}


	public void windowClosing(WindowEvent arg0)
	{
		
	}


	@Override
	public void windowDeactivated(WindowEvent arg0)
	{
		
	}


	@Override
	public void windowDeiconified(WindowEvent arg0)
	{
		
	}


	@Override
	public void windowIconified(WindowEvent arg0)
	{
		
	}


	@Override
	public void windowOpened(WindowEvent e)
	{
		
	}
}
